#include "BonusPuntajeAlContrario.h"
#include "Pacman.h"
#include "EscenarioModelo.h"
#include <SDL.h>
#include "Juego.h"

BonusPuntajeAlContrario::BonusPuntajeAlContrario(Punto* unPunto,unsigned int unRadio, bool vivo) : BonusModel(unPunto,unRadio,vivo){

}
        
void BonusPuntajeAlContrario::colisionarConPacman(ObjetoVivo* unObjetoVivo){
    Pacman* pacman = (Pacman*)unObjetoVivo;
    Pacman* pacmanEnemigo;

    if(EscenarioModelo::getEscenario()->getPacmanJugador1() == pacman){
        pacmanEnemigo = EscenarioModelo::getEscenario()->getPacmanJugador2(); 
    }else{
		pacmanEnemigo = EscenarioModelo::getEscenario()->getPacmanJugador1(); 
    }

    pacmanEnemigo->getJugador()->setMarcadorActual(pacman->getJugador()->getMarcadorDelJugador());

    Uint32* argumentos = new Uint32[3];
    memcpy(&argumentos[0],&(this->duracionEfecto),sizeof(Uint32));
    memcpy(&argumentos[1],&pacmanEnemigo,sizeof(Uint32));
    SDL_Thread * thread = SDL_CreateThread(BonusPuntajeAlContrario::volverAMarcadorOriginalThread, argumentos);


	// Se agrega el thread a la lista de thread para luego terminarlo si queda vivo.
	Juego::listaThreads->agregar(thread);
    this->matar();
}

int BonusPuntajeAlContrario::volverAMarcadorOriginalThread(void* parametros){
    Uint32* arregloParametros = (Uint32*)parametros;

    Uint32 delay = (Uint32)arregloParametros[0];
    Pacman* pacman = (Pacman*)arregloParametros[1];

    SDL_Delay(delay);
    
    pacman->getJugador()->cambiarAMarcadorPropio();
	delete[] arregloParametros ;
    return 0;
    
    }

void BonusPuntajeAlContrario::colisionarConFantasma(ObjetoVivo* unObjetoVivo){

}


BonusPuntajeAlContrario::~BonusPuntajeAlContrario(){
    
}
